// const db=wx.cloud.database();
// const app=getApp()
// Page({
//   data: {
//     bl:[],
//     urlarr: [],
//     tempFilePaths: [],
//     healthTips: [], // 存储AI分析的健康提示
//     isLoading: false, // 加载状态
//     showResult: false // 是否显示分析结果
//   },

//   // 预览图片（保持原有代码）
//   previewImage(e) {
//     const currentIndex = e.currentTarget.dataset.index
//     wx.previewImage({
//       current: this.data.urlarr[currentIndex],
//       urls: this.data.urlarr,
//       success: (res) => {
//         console.log('预览成功', res)
//       },
//       fail: (err) => {
//         console.error('预览失败', err)
//         wx.showToast({
//           title: '预览失败',
//           icon: 'none'
//         })
//       }
//     })
//   },

//   // // 上传按钮（修改后）
//   // clickbtn() {
//   //   wx.chooseImage({
//   //     success: res => {
//   //       this.setData({ 
//   //         tempFilePaths: res.tempFilePaths,
//   //         showResult: false // 上传新图片时隐藏之前结果
//   //       })
        
//   //       // 上传所有图片并分析
//   //       const uploadPromises = res.tempFilePaths.map((item, idx) => {
//   //         return this.cloudFile(`medical_${Date.now()}_${idx}`, item)
//   //       })
        
//   //       Promise.all(uploadPromises)
//   //         .then(fileIDs => {
//   //           this.analyzeMedicalRecords(fileIDs)
//   //         })
//   //         .catch(err => {
//   //           console.error('上传失败:', err)
//   //           wx.showToast({
//   //             title: '上传失败',
//   //             icon: 'none'
//   //           })
//   //         })
//   //     }
//   //   })
//   // },

//    // 新增方法：保存临时路径到数据库（不影响原有逻辑）
//    saveTempPaths(tempPaths) {
//     // try {
//     //   await wx.cloud.callFunction({
//     //     name: 'saveTempPaths',
//     //     data: {
//     //       tempPaths: tempPaths,
//     //       timestamp: new Date()
//     //     }
//     //   })
//     // } catch (err) {
//     //   console.error('临时路径保存失败（不影响主流程）:', err)
//     // }
// db.collection("bl").add({
//   data:{
//     tempPaths,
//     account:app.globalData.account
//   }
// }).then(res=>{
//   console.log("成功");
// })
//   },
//   // 当前代码是串行上传图片，可以改为并行上传
// clickbtn() {
//   wx.chooseImage({
//     success: res => {
//       this.setData({ 
//         tempFilePaths: res.tempFilePaths,
//         showResult: false
//       })
      
//    // 仅添加保存临时路径的逻辑
//    this.saveTempPaths(res.tempFilePaths);



//       // 直接并行上传所有图片
//       const uploadTasks = res.tempFilePaths.map((item, idx) => 
//         this.cloudFile(`medical_${Date.now()}_${idx}`, item)
//       );
      
//       Promise.all(uploadTasks)
//         .then(fileIDs => {
//           this.analyzeMedicalRecords(fileIDs);
//         })
//         .catch(err => {
//           console.error('上传失败:', err);
//           wx.showToast({ title: '上传失败', icon: 'none' });
//         });
//     }
//   });
// },


//   // 上传到云存储（修改后）
//   cloudFile(filename, path) {
//     return new Promise((resolve, reject) => {
//       wx.showLoading({ title: '上传中' })
//       wx.cloud.uploadFile({
//         cloudPath: 'medical-records/' + filename + ".jpg",
//         filePath: path
//       }).then(res => {
//         const newUrlArr = [...this.data.urlarr, res.fileID]
//         this.setData({ urlarr: newUrlArr })
//         wx.setStorageSync('uploadedImages', newUrlArr)
//         wx.hideLoading()
//         resolve(res.fileID)
//       }).catch(err => {
//         console.error("上传失败", err)
//         wx.hideLoading()
//         reject(err)
//       })
//     })
//   },
  
//   // 删除图片（修改后）
// delete: async function(e) {
//   try {
//     const index = e.currentTarget.dataset.index;
//     const fileID = this.data.urlarr[index];
    
//     // 1. 用户确认
//     const confirmRes = await wx.showModal({
//       title: '确认删除',
//       //content: '将同时删除云端记录，是否继续？',
//       confirmText: '确定删除',
//       confirmColor: '#FF4D4F'
//     });
//     if (!confirmRes.confirm) return;

//     wx.showLoading({ title: '正在删除...', mask: true });

//     // 2. 并行执行删除操作（文件+数据库）
//     const [fileDelRes, dbDelRes] = await Promise.allSettled([
//       wx.cloud.deleteFile({ fileList: [fileID] }),
//       wx.cloud.callFunction({
//         name: 'deleteMedicalRecord',
//         data: { 
//           fileID: fileID,
//           strictMode: true // 启用严格校验
//         },
//         timeout: 10000 // 10秒超时
//       })
//     ]);

//     // 3. 检查删除结果
//     let errorMsg = '';
    
//     // 文件删除失败
//     if (fileDelRes.status === 'rejected') {
//       console.error('文件删除失败:', fileDelRes.reason);
//       errorMsg += '文件删除失败; ';
//     }

//     // 数据库删除失败
//     if (dbDelRes.status === 'rejected' || 
//         !dbDelRes.value?.result?.success) {
//       console.error('数据库删除异常:', dbDelRes);
//       errorMsg += '记录删除失败; ';
//     }

//     // 任一操作失败则回滚
//     if (errorMsg) {
//       throw new Error(errorMsg);
//     }

//     // 4. 更新前端状态
//     const newUrlArr = this.data.urlarr.filter((_, i) => i !== index);
//     this.setData({
//       urlarr: newUrlArr,
//       healthTips: dbDelRes.value.result.deletedCount > 0 ? [] : this.data.healthTips,
//       showResult: dbDelRes.value.result.deletedCount > 0 ? false : this.data.showResult
//     });

//     wx.setStorageSync('uploadedImages', newUrlArr);
//     wx.hideLoading();
//     wx.showToast({ title: '删除成功', icon: 'success' });

//   } catch (err) {
//     console.error('删除流程失败:', err);
//     wx.hideLoading();
    
//     // 更友好的错误提示
//     let msg = '删除失败，请重试';
//     if (err.errMsg?.includes('permission')) {
//       msg = '权限不足，请联系管理员';
//     } else if (err.message?.includes('文件删除失败')) {
//       msg = '文件已删除，但记录可能残留';
//     }
    
//     wx.showToast({ title: msg, icon: 'none', duration: 3000 });
//   }
// },
//   // // 删除图片（保持原有代码）
//   // delete(e) {
//   //   const index = e.currentTarget.dataset.index
//   //   const newUrlArr = this.data.urlarr.filter((_, i) => i !== index)
//   //   this.setData({ 
//   //     urlarr: newUrlArr,
//   //     showResult: false // 删除图片后隐藏结果
//   //   })
//   //   wx.setStorageSync('uploadedImages', newUrlArr)
//   // },
  
//   // 新增：调用AI分析病历
//   async analyzeMedicalRecords(fileIDs) {
//     this.setData({ isLoading: true })
    
//     try {
//       // 1. 获取图片文字内容（简化处理，实际应调用OCR）
//       const medicalText = "模拟的病历文本内容"
      
//       // 2. 调用AI分析
//       const model = wx.cloud.extend.AI.createModel("deepseek")
//       const res = await model.generateText({
//         model: "deepseek-r1",
//         messages: [
//           {
//             role: "system",
//             content: "你是一位专业医生助手，需要从病历中提取关键健康建议"
//           },
//           {
//             role: "user",
//             content: `这是病历内容：${medicalText}\n请总结3-5条最重要的健康建议，每条15-20个字，格式为：1. 第一条建议 2. 第二条建议`
//           }
//         ]
//       })
      
//       // 3. 处理AI响应
//       let tips = []
//       if (res?.choices?.[0]?.message?.content) {
//         tips = this.formatTips(res.choices[0].message.content)
//       } else {
//         tips = ["1. 建议定期体检", "2. 保持规律作息", "3. 注意饮食均衡"]
//       }
      
//       // 4. 存储到数据库
//       const dbRes = await wx.cloud.callFunction({
//         name: 'saveMedicalAnalysis',
//         data: {
//           fileIDs: fileIDs,
//           tips: tips
//         }
//       })
      
//       this.setData({
//         healthTips: tips,
//         isLoading: false,
//         showResult: true
//       })
      
//     } catch (err) {
//       console.error('分析失败:', err)
//       this.setData({ isLoading: false })
//       wx.showToast({
//         title: '分析失败',
//         icon: 'none'
//       })
//     }
//   },
  
//   // 格式化健康提示
//   formatTips(text) {
//     return text.split('\n')
//       .map(line => line.replace(/^\d+\./, '').trim())
//       .filter(line => line.length >= 15 && line.length <= 20)
//       .slice(0, 5)
//   },
  
//   // 加载历史记录
//   onLoad(options) {
// //bl
// db.collection("bl").where({
//   account:app.globalData.account
// }).get().then(res=>{
//   console.log(res);
//   this.setData({

//   })
//   // if(res.data.photo)
//   // {
//   //   this.setData({
//   //     imgurl:res.data.photo
//   //   })
//   // }
//   // if(!res.data.photo){
//   //   this.setData({
//   //     imgurl:"/static/images/user (2).png"
//   //   })
//   // }
// })

//     // 初始化云开发
//   wx.cloud.init({
//     env: 'wzc-6gdn7zlt14380334', // 替换为实际环境ID
//     traceUser: true
//   })
//     const savedImages = wx.getStorageSync('uploadedImages') || []
//     this.setData({ urlarr: savedImages })
    
//     // 加载最近一次分析记录
//     this.loadLatestAnalysis()
//   },
  
//   // 加载最近一次分析记录
//   async loadLatestAnalysis() {
//     try {
//       const res = await wx.cloud.callFunction({
//         name: 'getLatestAnalysis'
//       })
      
//       if (res.result.data) {
//         this.setData({
//           healthTips: res.result.data.tips,
//           showResult: true
//         })
//       }
//     } catch (err) {
//       console.error('加载历史记录失败:', err)
//     }
//   }
// })


// pages/medical/index.js
const db = wx.cloud.database()
const app = getApp()

Page({
  data: {
    urlarr: [],       // 只存储云文件ID用于显示
    healthTips: [],   // 健康建议
    isLoading: false,
    showResult: false
  },

  // 初始化加载
  onLoad() {
    wx.cloud.init({ env: 'wzc-6gdn7zlt14380334' })
    this.loadMedicalRecords()
  },

  // 加载病历记录
  async loadMedicalRecords() {
    wx.showLoading({ title: '加载中...' })
    
    try {
      // 1. 从数据库获取当前用户的有效记录
      const res = await db.collection('medical_records')
        .where({
          account: app.globalData.account,
          status: 'active'
        })
        .orderBy('createdAt', 'desc')
        .get()
      
      // 2. 提取云文件ID（自动去重）
      const fileIDs = res.data.map(item => item.fileID)
      
      // 3. 更新显示
      this.setData({ urlarr: fileIDs })
      wx.setStorageSync('medical_images', fileIDs)
      
      // 4. 如果有记录，加载最新分析结果
      if (fileIDs.length > 0) {
        await this.loadLatestAnalysis()
      }
      
    } catch (err) {
      console.error('加载失败:', err)
      // 降级方案：使用本地缓存
      const cached = wx.getStorageSync('medical_images') || []
      this.setData({ urlarr: cached })
    }
    
    wx.hideLoading()
  },

  // 上传病历
  async clickbtn() {
    try {
      // 1. 选择图片（限制1张）
      const res = await wx.chooseImage({
        count: 1,
        sourceType: ['album', 'camera']
      })
      
      if (!res.tempFilePaths || res.tempFilePaths.length === 0) return
      
      wx.showLoading({ title: '分析病历中...', mask: true })
      const tempPath = res.tempFilePaths[0]
      
      // 2. 上传到云存储
      const fileID = await this.uploadToCloud(tempPath)
      
      // 3. 保存完整记录到数据库
      await this.saveMedicalRecord(tempPath, fileID)
      
      // 4. 更新显示（确保不重复）
      this.setData({
        urlarr: [...this.data.urlarr, fileID],
        showResult: false
      })
      wx.setStorageSync('medical_images', this.data.urlarr)
       // 分析病历
       await this.analyzeMedicalRecords([fileID]); // 调用分析方法
      
      wx.hideLoading()
      wx.showToast({ title: '分析成功', icon: 'success' })
      
    } catch (err) {
      wx.hideLoading()
      wx.showToast({ title: '上传失败', icon: 'none' })
      console.error('上传错误:', err)
    }
  },

  // 上传到云存储
  uploadToCloud(tempPath) {
    return new Promise((resolve, reject) => {
      const cloudPath = `medical/${Date.now()}_${Math.floor(Math.random() * 1000)}.jpg`
      
      wx.cloud.uploadFile({
        cloudPath,
        filePath: tempPath
      }).then(res => resolve(res.fileID))
        .catch(reject)
    })
  },

  // 保存病历记录
  async saveMedicalRecord(tempPath, fileID) {
    return db.collection('medical_records').add({
      data: {
        account: app.globalData.account,
        tempPath,
        fileID,
        status: 'active',
        createdAt: db.serverDate()
      }
    })
  },

 // 调用AI分析病历（保留原逻辑）
 async analyzeMedicalRecords(fileIDs) {
  this.setData({ isLoading: true });

  try {
    // 1. 获取图片文字内容（简化处理，实际应调用OCR）
    const medicalText = "模拟的病历文本内容";

    // 2. 调用AI分析
    const model = wx.cloud.extend.AI.createModel("deepseek");
    const res = await model.generateText({
      model: "deepseek-r1",
      messages: [
        {
          role: "system",
          content: "你是一位专业医生助手，需要从病历中提取关键健康建议"
        },
        {
          role: "user",
          content: `这是病历内容：${medicalText}\n请总结3-5条最重要的健康建议，每条15-20个字，格式为：1. 第一条建议 2. 第二条建议`
        }
      ]
    });

    // 3. 处理AI响应
    let tips = [];
    if (res?.choices?.[0]?.message?.content) {
      tips = this.formatTips(res.choices[0].message.content);
    } else {
      tips = ["1. 建议定期体检", "2. 保持规律作息", "3. 注意饮食均衡"];
    }

    // 4. 存储到数据库
    const dbRes = await wx.cloud.callFunction({
      name: 'saveMedicalAnalysis',
      data: {
        fileIDs: fileIDs,
        tips: tips,
        account:app.globalData.account
      }
    });

    this.setData({
      healthTips: tips,
      isLoading: false,
      showResult: true
    });
  } catch (err) {
    console.error('分析失败:', err);
    this.setData({ isLoading: false });
    wx.showToast({
      title: '分析失败',
      icon: 'none'
    });
  }
},
  // 格式化健康提示
  formatTips(text) {
    return text.split('\n')
      .map(line => line.replace(/^\d+\./, '').trim())
      .filter(line => line.length >= 15 && line.length <= 20)
      .slice(0, 5);
  },
  // 加载最新分析结果
  async loadLatestAnalysis() {
    try {
      const res = await db.collection('medical_analysis')
        .where({ fileID: this.data.urlarr[0] })
        .orderBy('createdAt', 'desc')
        .limit(1)
        .get()
      
      if (res.data.length > 0) {
        this.setData({
          healthTips: res.data[0].tips,
          showResult: true
        })
      }
    } catch (err) {
      console.error('加载分析结果失败:', err)
    }
  },

  // 删除病历
//   async delete(e) {
//     try {
//       const { index } = e.currentTarget.dataset
//       const fileID = this.data.urlarr[index]
      
//       // 确认删除
//       const { confirm } = await wx.showModal({
//         title: '确认删除',
//         content: '将永久删除此病历记录',
//         confirmColor: '#ff4d4f'
//       })
//       if (!confirm) return
      
//       wx.showLoading({ title: '删除中...', mask: true })
      
//       // 1. 删除云文件
//       await wx.cloud.deleteFile({ fileList: [fileID] })
      
// // 2. 删除 medical_analysis 中对应的记录
// await db.collection('medical_analysis')
// .where({ fileID })
// .remove();

      
//       // 2. 标记为已删除
//       await db.collection('medical_records')
//         .where({ fileID })
//         .update({ data: { status: 'deleted' } })
      
//       // 3. 更新前端
//       const newUrls = this.data.urlarr.filter(id => id !== fileID)
//       this.setData({
//         urlarr: newUrls,
//         healthTips: [],
//         showResult: false
//       })
//       wx.setStorageSync('medical_images', newUrls)
      
//       wx.hideLoading()
//       wx.showToast({ title: '删除成功', icon: 'success' })
      
//     } catch (err) {
//       wx.hideLoading()
//       wx.showToast({ title: '删除失败', icon: 'none' })
//       console.error('删除错误:', err)
//     }
//   },
async delete(e) {
  try {
    const { index } = e.currentTarget.dataset;
    const fileID = this.data.urlarr[index];

    // 确认删除
    const { confirm } = await wx.showModal({
      title: '确认删除',
      content: '将永久删除此病历记录',
      confirmColor: '#ff4d4f'
    });
    if (!confirm) return;

    wx.showLoading({ title: '删除中...', mask: true });

    // 1. 删除云文件
    await wx.cloud.deleteFile({ fileList: [fileID] });

    // 2. 删除 medical_analysis 中对应的记录
    try {
      const delRes = await db.collection('medical_analysis')
        .where({ fileIDs:fileID })
        .remove();

      console.log('删除 medical_analysis 成功:', delRes);
    } catch (err) {
      console.error('删除 medical_analysis 失败:', err);
    }

    // 3. 标记为已删除
    await db.collection('medical_records')
      .where({ fileID })
      .update({ data: { status: 'deleted' } });

    // 4. 更新前端
    const newUrls = this.data.urlarr.filter(id => id !== fileID);
    this.setData({
      urlarr: newUrls,
      healthTips: [],
      showResult: false
    });
    wx.setStorageSync('medical_images', newUrls);

    wx.hideLoading();
    wx.showToast({ title: '删除成功', icon: 'success' });
  } catch (err) {
    wx.hideLoading();
    wx.showToast({ title: '删除失败', icon: 'none' });
    console.error('删除错误:', err);
  }
},



  // 预览图片
  previewImage(e) {
    const { index } = e.currentTarget.dataset
    wx.previewImage({
      current: this.data.urlarr[index],
      urls: this.data.urlarr
    })
  }
})
